#include<bits/stdc++.h>
using namespace std;
vector<int> arr;
int n, m;
// 数组已经升序排列，因此x如果存在一定是连续存在
/*
arr.begin()指向索引0的位置
arr.end()指向索引n的位置(不存在)
*/


int funl(int x)
{
    auto it = lower_bound(arr.begin(), arr.end(), x); // lower_bound() 返回第一个大于等于目标值的迭代器
    if (it != arr.end() && *it == x) {
        return it - arr.begin(); // 得到的是从0开始的索引位置
    }
    return -1;
}

int funr(int x)
{
    auto it = upper_bound(arr.begin(), arr.end(), x); // upper_bound() 返回第一个大于目标值的迭代器
    if (it != arr.begin() && *(it - 1) == x) {
        return it - arr.begin() - 1;
    }
    return -1;
}

int main()
{
    cin >> n >> m;
    for (int i = 0; i < n; ++ i)
    {
        int x;
        cin >> x;
        arr.push_back(x);
    } 
    while (m --)
    {
        int x;
        cin >> x;
        int l = funl(x);
        int r = funr(x);
        cout << l << ' ' << r << endl;
    }
    return 0;
}